package com.ruoyi.market.service;

import com.ruoyi.market.domain.Project;
import com.ruoyi.market.domain.TreeProject;

import java.util.List;

/**
 * 服务项目 业务层
 * 
 * @author ruoyi
 */
public interface IProjectService
{
    /**
     * 根据条件分页查询服务项目列表
     * 
     * @param project 服务项目信息
     * @return 服务项目信息集合信息
     */
    public List<Project> selectProjectList(Project project);

    /**
     * 通过服务项目名查询服务项目
     * 
     * @param projectTitle 服务项目名
     * @return 服务项目对象信息
     */
    public Project selectProjectByProjectTitle(String projectTitle);

    /**
     * 通过服务项目ID查询服务项目
     * 
     * @param projectId 服务项目ID
     * @return 服务项目对象信息
     */
    public Project selectProjectById(Long projectId);

    /**
     * 校验服务项目名称是否唯一
     *
     * @param project 服务项目信息
     * @return 结果
     */
    public boolean checkProjectTitleUnique(Project project);


    /**
     * 新增服务项目信息
     * 
     * @param project 服务项目信息
     * @return 结果
     */
    public int insertProject(Project project);

    /**
     * 修改服务项目信息
     * 
     * @param project 服务项目信息
     * @return 结果
     */
    public int updateProject(Project project);

    /**
     * 修改服务项目状态
     * 
     * @param project 服务项目信息
     * @return 结果
     */
    public int updateProjectStatus(Project project);

    /**
     * 随机单是否可用
     *
     * @param project 服务项目信息
     * @return 结果
     */
    public int updateProjectIsAble(Project project);

    /**
     * 批量删除服务项目信息
     * 
     * @param projectIds 需要删除的服务项目ID
     * @return 结果
     */
    public int deleteProjectByIds(Long[] projectIds);

    /**
     * 导入服务项目数据
     * 
     * @param projectList 服务项目数据列表
     * @param isUpdateSupport 是否更新支持，如果已存在，则进行更新数据
     * @param operName 操作服务项目
     * @return 结果
     */
    public String importProject(List<Project> projectList, Boolean isUpdateSupport, String operName);

    /**
     * 查询服务项目树结构信息
     *
     * @param project 服务项目信息
     * @return 服务项目树信息集合
     */
    public List<TreeProject> selectProjectTreeList(Project project);

    /**
     * 构建前端所需要树结构
     *
     * @param projects 服务项目列表
     * @return 树结构列表
     */
    public List<Project> buildProjectTree(List<Project> projects);

    /**
     * 构建前端所需要下拉树结构
     *
     * @param projects 服务项目列表
     * @return 下拉树结构列表
     */
    public List<TreeProject> buildProjectTreeSelect(List<Project> projects);
}
